#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "ui_MainWindow.h"
#include <boost/noncopyable.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <fstream>
#include <QMainWindow>
#include <QMessageBox>
#include <QFileDialog>
#include <QIcon>
#include "../QtEnhancers/QListWidgetEnhancedItem/QListWidgetEnhancedItem.h"
#include "../ParserWindow/ParserWindow.h"
#include "../ChartType/ChartType.h"
#include "../BasicXYchartGUI/BasicXYchartGUI.h"
#include "../PlotWindow/PlotWindow.h"
#include "../GlobalChartOptions/GlobalChartOptions.h"
#include "../SeriesPreview/SeriesPreview.h"
#include "../AxisSettings/AxisSettings.h"

namespace LightChart
{
class MainWindow : public QMainWindow, private Ui_MainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget* parent = 0);
public slots:
    void onChartsItemActivated(QListWidgetItem *);
    void onAxesItemActivated(QListWidgetItem *);
    void onPreviewClicked(QListWidgetItem *);
    void onAddSeriesClicked();
    void onRemoveSeriesClicked();
    void onAxesOptionsClicked();
    void onChartOptionsClicked();
    void onNewChartClicked();
    void onDeleteChartClicked();
    void onPlotButtonClicked();
    void onActionOpen();
    void onActionSave();
    void onActionExit();
    void onActionParseFile();
    void onActionNewChart();
    void onActionGlobalOptions();
    void onActionPlotAll();
    void onActionAbout();
    void onActionAuthors();
    void onRefreshAvalibleSeries();
    void onRefreshCharts();
    void RefreshAll();
private:
    void setupConnections();
    GlobalChartOptions gco;
    ParserWindow pw;
    ChartType ct;
};
}

#endif // MAINWINDOW_H
